package com.yf.tz.service;

import com.yf.service.BaseService;
import com.yf.tz.entity.AccountEntity;
import com.yf.tz.entity.MallOrderEntity;

import java.math.BigDecimal;
import java.util.List;

/**
 * 账户信息Service接口
 *
 * @author hxf
 * @email 505860922@qq.com
 * @date Wed Jul 01 16:32:18 CST 2020
 */
public interface AccountService extends BaseService<AccountEntity> {


    /***********BACK***********/

    void adminTransfer(String fromUserName, String fromUserCode, String toUserName, String toUserCode, BigDecimal amount, Integer type, String remark);

    /***********API***********/

    /**
     * 使用积分
     *
     * @param userId
     * @param amount
     * @param remark
     */
    void usePoint(Long userId, BigDecimal amount, String remark, String orderNo);

    /**
     * 使用存储金
     *
     * @param userId
     * @param amount
     * @param remark
     */
    void useCash(Long userId, BigDecimal amount, String remark, String orderNo);


    /**
     * 奖励积分
     *
     * @param userId
     * @param amount
     * @param remark
     * @param orderNo
     */
    void rewardPoint(Long userId, BigDecimal amount, String remark, String orderNo);


    /**
     * 找出账号 没有就新增
     *
     * @param userId
     * @param type
     * @return
     */
    AccountEntity findByUserIdAndType(Long userId, Integer type);

    /**
     * 找出用户的所有账户
     *
     * @param userId
     * @return
     */
    List<AccountEntity> findByUserId(Long userId);

    /**
     * 取消订单退款的操作
     *
     * @param orderId
     */
    void cancelOrder(MallOrderEntity orderEntity);


    //充值提交
    String recharge(Long userId,BigDecimal amount);

    //充值支付完成
    void rechargePay(String orderNo,BigDecimal totalPay);

}
